package Day_013_T560;

import java.util.HashMap;

/**
 * @author XIAOLIANG
 * @ClassName Solution.java
 * @Description TODO
 * @createTime 2021年01月27日 21:15:00
 * 560. 和为K的子数组
 * 给定一个整数数组和一个整数 k，你需要找到该数组中和为 k 的连续的子数组的个数。
 *
 * 示例 1 :
 *
 * 输入:nums = [1,1,1], k = 2
 * 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。
 * 说明 :
 *
 * 数组的长度为 [1, 20,000]。
 * 数组中元素的范围是 [-1000, 1000] ，且整数 k 的范围是 [-1e7, 1e7]。
 * 通过次数86,914提交次数193,580
 * https://leetcode-cn.com/problems/subarray-sum-equals-k/
 */
public class Solution {
	//解题的思路1 使用滑动窗口 先计算出数组所有的的和 慢慢缩小窗口 从左向右滑动 当窗口中的和等于K    count+1

	//解题思路二 直接通过两层循环计算两个元素间的累积和 暴力

	public int subarraySum(int[] nums, int k) {

	int res = 0;

		for (int i = 0; i < nums.length; i++) {

			int sum = 0;

			for (int j = i	; j < nums.length ; j++) {

				sum+=nums[j];

				if (sum==k){
					res++;
				}


			}

		}

		return res;



	}


}
